package com.sumainfor.pc.market.dao;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 功能描述:
 * 房源信息
 *
 * @Auther: zhlu
 * @Date: 2018/12/15 14:59
 * @Description:
 */
@Mapper
public interface HousingMapper {

    /**
     * 通过项目编号, 楼号, 室号, 查到所有的房源id数组
     **/
    List<String> getHouseIdListByBuildAndRoom(Map<String, Object> params);

    /**
     * 功能描述:
     * 获取盈利预测中已通过审核的房源
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2018/12/15 15:00
     */
    Map<String, Object> getProfitHousing(Map<String, Object> params);

    /**
     * 功能描述:
     * 新增收房信息
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2018/12/18 11:35
     */
    Integer AddHousing(Map<String, Object> params);

    /**
     * 功能描述:
     * 房源列表
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2018/12/18 17:50
     */
    List<Map<String, Object>> getHousingList(Map<String, Object> params);

    /**
     * 功能描述:
     * 房源列表总数
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2018/12/18 17:51
     */
    Integer getHousingListCount(Map<String, Object> params);

    /**
     * 功能描述:
     * 根据房源编号获取房源资料
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2018/12/19 9:59
     */
    Map<String, Object> getHousingMap(Map<String, Object> params);

    /**
     * 功能描述:
     * 修改房源主表
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2018/12/19 11:59
     */
    Integer updateHousing(Map<String, Object> params);

    /**
     * 功能描述:
     * 新增房源详表
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2018/12/19 19:13
     */
    Integer AddHousingInfo(Map<String, Object> params);

    /**
     * 功能描述:
     * 根据工程部查询已变更房源配置的房源查询市场部房源列表
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2018/12/26 9:46
     */
    List<Map<String, Object>> getHousingPlanAmendList(Map<String, Object> params);

    /**
     * 功能描述:
     * 根据工程部查询已变更房源配置的房源查询市场部房源列表总数
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2018/12/26 9:47
     */
    Integer getHousingPlanAmendListCoun(Map<String, Object> params);

    /**
     * 功能描述:
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/1/12 19:59
     */
    Map<String, Object> getHousingOwadvance(Map<String, Object> params);

    /**
     * 功能描述:
     * 根据项目统计项目已收房源、和拆分房间数
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/1/19 11:15
     */
    Map<String, Object> getHousingReceivedCount(Map<String, Object> params);

    /**
     * 功能描述:
     * 获取房源验收之后定价
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/2/12 20:02
     */
    List<Map<String, Object>> getPricingHousingList(Map<String, Object> params);

    /**
     * 功能描述:
     * 获取房源验收之后定价总数
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/2/12 20:02
     */
    Integer getPricingHousingListCont(Map<String, Object> parmas);

    /**
     * 功能描述:
     * 根据房源编号获取定价房源详情
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/2/13 18:14
     */
    List<Map<String, Object>> getPricingHousingInfoList(Map<String, Object> params);

    /**
     * 功能描述:
     * 根据房源详情的房间编号获取该房间配置
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/2/13 19:21
     */
    List<Map<String, Object>> getPricingHousingConInfoList(Map<String, Object> params);

    /**
     * 功能描述:
     * 获取所有房源房间
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/2/14 18:48
     */
    List<Map<String, Object>> getHousingActList(Map<String, Object> params);

    /**
     * 功能描述:
     * 获取所有房源房间总数
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/2/14 18:48
     */
    Integer getHousingActListCount(Map<String, Object> params);

    /**
     * 功能描述:
     * 获取已验收房源总套数
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/6 13:52
     */
    Integer getHousingAcceptanceCount(Map<String, Object> params);

    /**
     * 功能描述:
     * 获取已验收房源房间总套数
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/6 13:53
     */
    Integer getHousingInfoAcceptanceCount(Map<String, Object> params);

    /**
     * 功能描述:
     * 根据房源编号获取房源配置房间
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/6 18:25
     */
    List<Map<String, Object>> getHousingConList(Map<String, Object> params);

    /**
     * 功能描述:
     * 根据房源主编号获取巡房房源资料
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/7 19:18
     */
    Map<String, Object> getPatrolHousginMap(Map<String, Object> params);

    /**
     * 功能描述:
     * 根据房源主编号获取巡房房源区域
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/7 19:33
     */
    List<Map<String, Object>> getPatrolHousingConList(Map<String, Object> params);

    /**
     * 功能描述:
     * 根据业主手机号获取业主房源情况
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/13 19:24
     */
    List<Map<String, Object>> getWechatOwnerHousing(Map<String, Object> params);

    /**
     * 功能描述:
     * 根据业主手机号获取业主房源情况总数
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/31 11:40
     */
    Integer getWechatOwnerHousingCount(Map<String, Object> params);

    /**
     * 功能描述:
     * 根据一个房源主编号获取当前房源的状态    0装修中   1出租中   2部分出租
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/13 19:33
     */
    Map<String, Object> getWechatOwnerHousingStatus(Map<String, Object> params);

    /**
     * 功能描述:
     * 根据业主房源主编号获取房源信息
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/13 20:51
     */
    Map<String, Object> getWechatHousingMap(Map<String, Object> params);

    /**
     * 功能描述:
     * 根据业主房源主编号获取房源详情信息
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/13 20:53
     */
    List<Map<String, Object>> getWechatHousingInfoList(Map<String, Object> params);

    /**
     * 功能描述:
     * 装修计划判断当前已选中房源的服务中心
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/5/2 18:24
     */
    Map<String, Object> getHousingMiMap();

    /**
     * 功能描述:
     * 获取所有房源资料(字段可扩展)
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/5/5 16:04
     */
    List<Map<String, Object>> getAllHousingArrList();

    /**
     * 功能描述:
     * 获取所有房源资料(字段可扩展)
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/5/5 16:04
     */
    List<Map<String, Object>> getAllHousingLists();

    /**
     * 功能描述:
     * 根据房源配置获取所有房源资料(字段可扩展)
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/5/9 13:43
     */
    List<Map<String, Object>> getAllHousingConLists();

    /**
     * 功能描述:
     * 根据租客编号获取租客当前合同列表
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/5/10 20:44
     */
    List<Map<String, Object>> getTenantPactList(Map<String, Object> params);

    /**
     * 功能描述:
     * 运营部根据退租账单编号获取房源物品清单
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/5/20 10:37
     */
    List<Map<String, Object>> getWithHouConInfoList(Map<String, Object> params);

    /**
     * 功能描述:
     * 根据项目编号获取所有房源编号
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/5/5 16:04
     */
    List<Map<String, Object>> getAllComIdHousingList(Map<String, Object> params);

    /**
     * 根据房源编号过滤这个项目下的房源信息
     *
     * @param hIds
     * @return
     */
    List<String> selectComIdByHids(@Param("hIds") List<String> hIds, @Param("val") String val, @Param("col") String col, @Param("where") String where);


    /**
     * 获取房源详细信息数据
     *
     * @param hIds
     * @return
     */
    List<Map<String, Object>> selectHousingDetailByArray(@Param("hIds") List<String> hIds);

    /**
     * 查找房间号通过房源配置编号
     *
     * @param ids
     * @return
     */
    List<Map<String, Object>> selectHousingRoomByConId(@Param("ids") List<String> ids);

    /**
     * 功能描述:
     * 根据盈利预测室号,获取所有的房源出租房间列表
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/6/20 20:03
     */
    List<Map<String,Object>>getProByHousingInfoList(Map<String,Object>params);

    /**
     * 功能描述:
     * 根据服务中心编号，项目编号。楼号。房号。室号获取房源主表和房源详表
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/6/21 11:45
     */
    List<Map<String,Object>>getMiAndComAndBuiAndRoomAndHouList(Map<String,Object>params);

    /**
     * 功能描述:
     * 根据项目编号获取当前项目出租的房源
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/6/25 19:03
     */
    Map<String,Object> getComIdByAlreadyTaken(Map<String,Object>params);

    /**
     * 功能描述:
     * 根据项目编号获取当前项目的出租的房间总数
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/6/25 19:08
     */
    Map<String,Object> getComIdByRentOut(Map<String,Object>params);

    /**
     * @description:根据房源编号查询当前房源是否有在租租客
     * @param
     * @return java.lang.Integer
     * @author zhlu
     * @date 2019/9/17 14:31
     */
    Integer getHouIdByRenting(Map<String,Object>params);

    /**
     * @description:根据房源编码获取当前房源的公司编码和业主合同
     * @param params
     * @return java.util.Map<java.lang.String,java.lang.Object>
     * @author zhlu
     * @date 2019/9/17 16:28
     */
    Map<String,Object>getHouIdByOwner(Map<String,Object>params);


    List<Map<String,Object>> getHouIncid(Map<String,Object> params);
}
